package easybooking.report;

import easybooking.data.*;
import java.rmi.*;

/**
 * A report generator provides the opportunity to generate reports. These reports prepare data of the system
 * to get a view of business circumstances.
 *
 * This class has a few <code>create...</code>-methods. These methods generate the reports.
 * Each of these methods get a list of parameters passed, which are important fot this business use case.
 * These parameters need the generator to generate the reports.
 *
 * New <code>create...</code>-method can be added if new reports are required. The existing
 * <code>create...</code>-methods are noch influenced by these new <code>create...</code>-methods.
 *
 * @author Hakan Keles
 */
// <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
// #[regen=yes,id=DCE.B333AB94-E7B3-17A7-1E72-D5E8D7D5824F]
// </editor-fold> 
public interface ReportGenerator extends Remote {

    /**
     * Generates a <code>AllFlightsOfCustomerWithAirlineReport</code>-Report. These report displays all
     * flights of a certain customer with a certain airline.
     *
     * @param c Association to the customer, whose flights are displayed.
     * @param a Association to the airline, which is part of the flight.
     * @return the result report object
     * @throws java.rmi.RemoteException
     * @see AllFlightsOfCustomerWithAirlineReport
     */
    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.FC5C15C1-20D2-799E-254B-025B73B16ED3]
    // </editor-fold> 
    public abstract AllFlightsOfCustomerWithAirlineReport createFlightsOfCustomerWithAirlineReport (Customer c, Airline a) throws RemoteException;


    /**
     * Generates a <code>FlightSeatingReport</code>-Report. These report displays a seating of a flight.
     *
     * @param f Association to the flight, whose seating is displayed.
     * @return the result report object
     * @throws java.rmi.RemoteException
     * @see FlightSeatingReport
     */
    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.2B38AC52-F45B-FD58-9875-FC7402E505FA]
    // </editor-fold> 
    public abstract FlightSeatingReport createFlightSeatingReport (Flight f) throws RemoteException;


    /**
     * Generates a <code>AllFlightsOfCustomerReport</code>-Report. These report displays all
     * flights of a certain customer.
     *
     * @param c Association to the customer, whose flights are displayed.
     * @return the result report object
     * @throws java.rmi.RemoteException
     * @see AllFlightsOfCustomerReport
     */
    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.F36EA93B-FB94-F5B3-B6BF-B182B2E1454F]
    // </editor-fold> 
    public abstract AllFlightsOfCustomerReport createAllFlightsOfCustomerReport (Customer c) throws RemoteException;

}

